﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Recipes.Logic
{
    /// <summary>
    /// Classe costruita per poter comparare le categorie e poterle ordinare
    /// secondo l'ordine di portata.
    /// In un dizionario si inseriscono le catogorie e gli si associa una priorità:
    /// 0 -> priorità alta
    /// 4 -> priorità bassa
    /// </summary>
    public class RecipeCategoryComparer : IComparer<string>
    {
        
        private static IDictionary<string, int> map;
        /// <summary>
        /// Costruttore del comparer.
        /// Ininizializza il dizionario.
        /// </summary>
        public RecipeCategoryComparer()
        {
            map = new Dictionary<string, int>();
            map.Add("New", 0);
            map.Add("Antipasti", 1);
            map.Add("Primi Piatti", 2);            
            map.Add("Secondi Piatti", 3);
            map.Add("Dolci", 4);
        }

        /// <summary>
        /// Metodo ereditato dall'interfaccia IComparer.
        /// </summary>
        /// <param name="x">Il primo oggetto da comparare</param>
        /// <param name="y">Il secondo oggetto da comparare</param>
        /// <returns>
        /// -1 se x minore di y;
        /// +1 se x maggiore di y;
        /// 0 se x uguale a y.
        /// </returns>
        public int Compare(string x, string y)
        {
            if (map[x] < map[y])
                return -1;
            else if (map[x] > map[y])
                return 1;

            return 0;
        }
    }
}
